package com.linkgie.galaxyframework.utils.json;

import java.util.Iterator;

public interface JsonElement {

    boolean isObject();

    boolean isArray();

    boolean hasField(String fieldName);

    JsonElement getField(String fieldName);

    String getString(String fieldName);

    Integer getInt(String fieldName);

    Long getLong(String fieldName);

    Boolean getBoolean(String fieldName);

    Double getDouble(String fieldName);

    <T> T getValue(String fieldName, Class<T> type);


    /**
     * 返回数组的指定索引位置的元素；
     * @param index 索引位置；
     * @return
     */
    JsonElement array(int index);

    /**
     * 返回数组的所有元素；
     */
    Iterator<JsonElement> arrayIterator();

    String toJson();

    String toPrettyJson();

    <T> T toValue(Class<T> type)  throws JsonFormatException, JsonException ;

    
}
